package cn.fxzhang.leetcode.no00;

/**
 * 9. 回文数
 *
 * 类型：数值处理
 * 题解：数值处理
 * 时间复杂度：O(lgN)
 * 空间复杂度：O(1)
 *
 * 提交记录(1/1)：
 * 执行用时: 13 ms, 击败了21.93%
 * 内存消耗: 37.8 MB, 击败了68.21%
 *
 * 【中等】通过次数613,901提交次数1,046,818
 * @author 张晓帆
 * @date 2021/4/6
 */
public class P0009_Palindrome_Number {

    public boolean isPalindrome(int x) {
        if (x < 0){
            return false;
        }
        // 找出z=10^k，使得z<=x
        int y = x;
        int z = 1;
        int i = 0;
        while (y >= 10){
            y /= 10;
            z *= 10;
            i++;
        }

        y = x;
        i = i/2;
        while (i>=0){
            // 最低位
            int a = x%10;
            x /= 10;
            // 最高位
            int b = y/z%10;
            z /= 10;
            if (a != b){
                return false;
            }
            i--;
        }
        return true;
    }
}
